09.10.2007 - Dieses Howto ist komplett veraltert
NICHT mehr hotplug verwenden!
USB Installieren
1.0 Einleitung
Dieses Howto zeigt auf, wie man unter einem 2.6.x Linux System usb
so konfiguriert, dass angesteckte mass-storage Geräte richtig
erkannt werden.
1.1 Last updated on 08.05.2004
2.0 Kernel konfigurieren
Versuch am 22.03.2003 usb mass storage (sony digitalkamera) unter debian
linux woody in Betrieb zu nehmen
2.1 Fehlerhafte logs
Beim Anstecken:
Mar 22 15:53:24 superbyte Mar 22 15:53:57 superbyte kernel: hub.c: new USB device 00:07.4-2, assigned address 2
Mar 22 15:53:57 superbyte kernel: usb.c: USB device 2 (vend/prod 0x54c/0x10) is not claimed by any active driver.
Mar 22 15:53:58 superbyte /etc/hotplug/usb.agent: Setup usb-storage for USB product 54c/10/210
Mar 22 15:53:58 superbyte kernel: SCSI subsystem driver Revision: 1.00
Mar 22 15:53:58 superbyte kernel: Initializing USB Mass Storage driver...
Mar 22 15:53:58 superbyte kernel: usb.c: registered new driver usb-storage
Mar 22 15:53:58 superbyte kernel: scsi0 : SCSI emulation for USB Mass Storage devices
Mar 22 15:53:58 superbyte kernel: Vendor: Sony Model: Sony DSC Rev: 2.10
Mar 22 15:53:58 superbyte kernel: Type: Direct-Access ANSI SCSI revision: 02
Mar 22 15:53:58 superbyte kernel: WARNING: USB Mass Storage data integrity not assured
Mar 22 15:53:58 superbyte kernel: USB Mass Storage device found at 2
Mar 22 15:53:58 superbyte kernel: USB Mass Storage support registered.
Mar 22 15:53:58 superbyte /etc/hotplug/usb.agent: missing kernel or user mode driver usb-storage
zu beachten ist die letzte Fehlermeldung!
2.2 hotplug
Wenn ich die Kamera anstecke höre ich nicht dieses typische Piepsen, obwohl, hotplug installiert ist.
also auf die Hompage:
http://linux-hotplug.sourceforge.net/
Ich überprüfe einmal kurz, ob mein Kernel überhaupt die hotplug funktionen integriert hat:
CONFIG_HOTPLUG=y
schaut gut aus!
http://linux-hotplug.sourceforge.net/?selected=usb
dort steht, dass man mit
/sbin/hotplug usb
das hotplug für usb einschalten kann! Also am besten startup- Skripte überprüfen
3.0 sg Utils
danach habe ich die usbiew und sg3-utils (wegen kernel 2.4) installiert!
3.1 sg_map:
output: sg_map
/dev/sg0
hier sollte aber die Verbindung zu einem blockorientierten Geräte sein, damit
man es auch mounten kann, leider nicht -> (kernel falsch eingestellt?)
outpus für diverse sg commands:
superbyte:/mnt# sg_debug /dev/sg0
System is using sg version 3 driver. Hence the user can execute:
'cat /proc/scsi/sg/debug' themselves. Here is an example:
dev_max(currently)=7 max_active_device=1 (origin 1)
scsi_dma_free_sectors=48 sg_pool_secs_aval=320 def_reserved_size=32768
>>> device=sg0 scsi0 chan=0 id=0 lun=0 em=1 sg_tablesize=255 excl=0
FD(1): timeout=60000ms bufflen=32768 (res)sgat=0 low_dma=0
cmd_q=0 f_packid=0 k_orphan=0 closed=0
No requests active
3.2 sg_scan:
superbyte:/mnt# sg_scan -i
/dev/sg0: scsi0 channel=0 id=0 lun=0 [em] type=0
[wide=0 sync=0 cmdq=0 sftre=0 pq=0x1]
3.2 cdrecord
scanbus von cdrecord gibt bessere auskünfte hier erfährt man sogar
den Namen des Devices:
Lesen des scsi howtos:
http://www.linuxdocs.org/HOWTOs/SCSI-2.4-HOWTO/scsiaddr.html
SCSI CD-ROM devices are allocated the block major number of 11. Traditionally sr has been the device
name but scd probably is more recognizable and is favoured by several recent distributions. 256 SCSI
CD-ROM devices are allowed:
[b,11,0] /dev/scd0 [or /dev/sr0]
[b,11,255] /dev/scd255 [or /dev/sr255]
Das hier ist der Wichtigste Teil. Es geht darum, dass man 255 cdroms als scsi verwenden kann. Das
besondere ist, dass diese auch gemountet werden können (im gegensatz zu /dev/sda ...)
# cdrecord -scanbus
superbyte:/home/markus# cdrecord -scanbus
Cdrecord 1.10 (i686-pc-linux-gnu) Copyright (C) 1995-2001 Jörg Schilling
Linux sg driver version: 3.1.24
Using libscg version 'schily-0.5'
scsibus0:
0,0,0 0) 'PLEXTOR ' 'CD-R PX-W1610A' '1.00' Removable CD-ROM
0,1,0 1) *
0,2,0 2) *
0,3,0 3) *
0,4,0 4) *
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
Mit dem cdrecord Befehl kann man herausfinden, welche Laufwerke gerade verbunden sind!
0,0,0 /dev/sr0
0,1,0 /dev/sr1
0,2,0 /dev/sr2
0,3,0 /dev/sr3
0,4,0 /dev/sr4
und so weiter.
Also kann ich meinen Plextorbrenner bereits mit:
mount /dev/scd0 /brenner
mounten, vielleicht noch ein -ro dazu (ist aber umsonst, kann sowieso nur read only gemounted werden)
also wird die Datei /etc/fstab ergänzt:
/dev/scd0 /burner iso9660 ro,user,noauto 0 0
Der Eintrag burner wurde dazugegeben. Zu empfehlen ist mit mkdir /burner auch das Verzeichnis anzulegen.
Unter Kde kann man noch:
Desktop klicken -> Neu -> erstellen -> CD/DVD Rom -> Gerät -> /burner
und mit einem klick kann bereits der Inhalt angezeigt werden!
Aus einem USB howto:
http://linuxusbguide.sourceforge.net/USB-guide-1.0.9/book1.html
besonders intressant ist das mass-storage howto:
http://linuxusbguide.sourceforge.net/USB-guide-1.0.9/x485.html
4.0 fstab
Folgende minimale fstab wird benötigt, damit hotplug funktionieren kann:
#
#unbedingt benötigte Filesysteme
proc /proc proc defaults 0 0
usbdevfs /proc/bus/usb usbdevfs noauto 0 0
/dev/sda1 /mnt/kamera vfat rw,auto,user,exec 0 0
5.0 usbmap file
beim output von sg_map bin ich jetzt darauf gekommen, dass meine kamera gar nicht gemapped wird:
superbyte:/mnt/kamera# sg_scan
/dev/sg0: scsi0 channel=0 id=0 lun=0 [em] type=0
/dev/sg1: scsi1 channel=0 id=0 lun=0 [em] type=5
superbyte:/mnt/kamera# sg_map
/dev/sg0
/dev/sg1 /dev/scd0
also muss ich suchen, wie man überhaupt sowas mapped
http://www.edginet.org/techie/linux/canon.html#HOTPLUG
die Seite schaut recht intressant aus
der wichtiste Teil ist der folgende:
# gphoto2 --print-usb-usermap > usb.usermap.local
# update-usb.usermap
also: gphoto2 installieren und usermap erzeugen!
ich schaue mir mal die /var/log/messages an
superbyte:/etc/hotplug# tail -f /var/log/messages
Apr 7 09:48:41 superbyte /etc/hotplug/usb.agent: missing kernel or user mode driver usb-storage
Apr 7 09:54:29 superbyte kernel: usb.c: USB disconnect on device 00:07.4-2 address 6
Apr 7 10:06:02 superbyte kernel: hub.c: new USB device 00:07.4-2, assigned address 7
Apr 7 10:06:03 superbyte /etc/hotplug/usb.agent: Setup usb-storage for USB product 54c/10/210
Apr 7 10:06:03 superbyte /etc/hotplug/usb.agent: missing kernel or user mode driver usb-storage
Apr 7 10:24:12 superbyte -- MARK --
Apr 7 10:27:55 superbyte kernel: usb.c: USB disconnect on device 00:07.4-2 address 7
Apr 7 10:28:03 superbyte kernel: hub.c: new USB device 00:07.4-2, assigned address 8
Apr 7 10:28:04 superbyte /etc/hotplug/usb.agent: Setup usb-storage for USB product 54c/10/210
Apr 7 10:28:04 superbyte /etc/hotplug/usb.agent: missing kernel or user mode driver usb-storage
da passt irgendwas mit usb-storage nicht!
Nocheinmal die Messages in der xconsole:
Apr 7 13:36:46 superbyte kernel: hub.c: new USB device 00:07.4-2, assigned address 10
Apr 7 13:36:46 superbyte kernel: WARNING: USB Mass Storage data integrity not assured
Apr 7 13:36:46 superbyte kernel: USB Mass Storage device found at 10
Apr 7 13:36:47 superbyte /etc/hotplug/usb.agent: ... no modules for USB product 54c/10/210
Apr 7 13:37:12 superbyte modprobe: modprobe: Can't locate module block-major-8
Apr 7 13:38:22 superbyte kernel: usb.c: USB disconnect on device 00:07.4-2 address 10
Warning deutet darauf hin, dass die Integrität gefährdet ist.
Noch bedenklicher ist aber, dass block-major-8 nicht gefunden werden kann!
Blöderweise braucht /dev/sda1 genau black-major-8!
oje, der Fehler liegt im Kernel, ich habe vergessen:
SCSI disk support
als Modul anzuwählen!
nunja, also kernel neu kompilieren
hier ist nun die letztendliche konfig des kernels:
CONFIG_BLK_DEV_FD=m
CONFIG_BLK_DEV_IDE=y
CONFIG_BLK_DEV_IDEDISK=y
CONFIG_IDEDISK_MULTI_MODE=y
CONFIG_BLK_DEV_IDESCSI=m
#
# SCSI support
#
CONFIG_SCSI=m
CONFIG_BLK_DEV_SD=m
CONFIG_SD_EXTRA_DEVS=40
CONFIG_BLK_DEV_SR=m
CONFIG_SR_EXTRA_DEVS=2
CONFIG_CHR_DEV_SG=m
#
# USB support
#
CONFIG_USB=m
# CONFIG_USB_DEBUG is not set
CONFIG_USB_DEVICEFS=y
# CONFIG_USB_BANDWIDTH is not set
# CONFIG_USB_LONG_TIMEOUT is not set
CONFIG_USB_EHCI_HCD=m
CONFIG_USB_UHCI=m
CONFIG_USB_UHCI_ALT=m
CONFIG_USB_OHCI=m
CONFIG_USB_AUDIO=m
# CONFIG_USB_EMI26 is not set
CONFIG_USB_BLUETOOTH=m
# CONFIG_USB_MIDI is not set
CONFIG_USB_STORAGE=m
# CONFIG_USB_STORAGE_DEBUG is not set
CONFIG_USB_STORAGE_DATAFAB=y
CONFIG_USB_STORAGE_FREECOM=y
CONFIG_USB_STORAGE_ISD200=y
CONFIG_USB_STORAGE_DPCM=y
CONFIG_USB_STORAGE_HP8200e=y
CONFIG_USB_STORAGE_SDDR09=y
CONFIG_USB_STORAGE_SDDR55=y
CONFIG_USB_STORAGE_JUMPSHOT=y
Wobei natürlich nicht alle marken aktivert werden müssen, sonder
eigentlich nur die die gebraucht werden.
soda, jetzt ein neustart mit neuen Kernel...
und funktioniert auch